--- /dev/null
+#!/bin/sh
+
+# create filelist using CVS Entries files
+#
+# Parameter 1: base directory where we're looking for the first CVS directory
+# Parameter 2: insert directory name "$2" at the beginning of
+# resulting filenames
+#
+# foo> ./tools/mkfilelist . gpsbabel-1.2.8/
+#
+# creates a output like the this:
+#
+# ...
+# gpsbabel-1.2.8/win32/gui-2/options.pas
+# gpsbabel-1.2.8/win32/gui-2/utils.pas
+# gpsbabel-1.2.8/win32/gui-2/GPSBabelGUI.res
+# gpsbabel-1.2.8/win32/GPSBabelGUI.exe
+# gpsbabel-1.2.8/copilot.c
+# gpsbabel-1.2.8/gcdb.c
+# gpsbabel-1.2.8/fatal.c
+# ...
+
+function loop()
+{
+ test -f "$1/CVS/Entries" || return 0
+
+ case $1 in
+ /) return 0;;
+ esac
+
+ IFS="/"
+ cat "$1/CVS/Entries" |
+ while read LINE; do
+ echo "$LINE" |
+ (
+ read LEAD NAME READ
+ test "x$NAME" == "x" && continue
+ case $LEAD in
+ D)
+ loop "$1/$NAME/" "$2"
+ ;;
+ *)
+ echo "$2$1/$NAME"
+ ;;
+ esac
+ )
+ done
+ IFS=" "
+}
+
+loop "$1" "$2" | sed -e 's|\/\/|\/|g' -e 's|\.\.|\.|g' -e 's|\.\/||g'